"""Definition of the Licitacion content type
"""

from AccessControl import ClassSecurityInfo

from zope.interface import implements, directlyProvides

from Products.Archetypes import atapi
from Products.Archetypes import utils
from Products.ATContentTypes.content import base
from Products.ATContentTypes.content import schemata

from guegue.alcaldias import alcaldiasMessageFactory as _
from guegue.alcaldias.interfaces import ILicitacion
from guegue.alcaldias.config import PROJECTNAME

LicitacionSchema = schemata.ATContentTypeSchema.copy() + atapi.Schema((

    # -*- Your Archetypes field definitions here ... -*-
    atapi.StringField('title',
                searchable=1,
                isMetadata=0,
                accessor='Title',
                widget=atapi.StringWidget(label='Nombre de la Licitación',
                                      maxlength=150,
                                      size=30,
                                      label_msgid="label_entry_title",
                                      description_msgid="help_entry_title",
                                      i18n_domain="guegue.alcaldias",
                                      description='Agregue a la par del nombre de la licitación el número de licitación correspondiente separado por "-"')),
    atapi.StringField('description',
                searchable=1,
                isMetadata=0,
                accessor='Description',
                widget=atapi.TextAreaWidget(label='Descripción',
                                      label_msgid="label_entry_description",
                                      description_msgid="help_entry_description",
                                      i18n_domain="guegue.alcaldias",
                                      description='Entre una breve descripción de la licitacion.')),
    atapi.StringField('numero',
                searchable=1,
                isMetadata=0,
                widget=atapi.StringWidget(label='No. de Licitación',
                                      maxlength=9,
                                      size=12,
                                      label_msgid="label_entry_numero",
                                      description_msgid="help_entry_numero",
                                      i18n_domain="guegue.alcaldias",
                                      description='')),
    atapi.StringField('ano',
                searchable=1,
                isMetadata=0,
                widget=atapi.StringWidget(label='Año',
                                      maxlength=9,
                                      size=12,
                                      label_msgid="label_entry_ano",
                                      description_msgid="help_entry_ano",
                                      i18n_domain="guegue.alcaldias",
                                      description='')),
    atapi.DateTimeField('fecha',
                searchable=0,
                required=0,
                widget=atapi.CalendarWidget(label='Fecha de Inicio de Licitación',
                                      label_msgid="label_entry_fecha",
                                      show_hm = False,
                                      description_msgid="help_entry_fecha",
                                      i18n_domain="guegue.alcaldias",
                                      description='Fecha de inicio')),
    atapi.DateTimeField('fechafin',
                searchable=0,
                required=0,
                widget=atapi.CalendarWidget(label='Fecha de Cierre de Licitación',
                                      label_msgid="label_entry_fechafin",
                                      show_hm = False,
                                      description_msgid="help_entry_fechafin",
                                      i18n_domain="guegue.alcaldias",
                                      description='Fecha de finalizacion')),
    atapi.StringField('proceso',
                searchable=1,
                isMetadata=0,
                vocabulary=['Licitación Restringida','Licitación por Registro','Licitación Pública','Compras por Cotización','Comparación de Precio a nivel internacional','Comparación de Precio a nivel local','Contratación directa','Licitación abierta internacional','Licitación abierta local','Licitación internacional Restringida','Licitación o concurso privado','Otro'],
                widget=atapi.SelectionWidget(label='Tipo de Procedimiento o Modalidad de Contratación',
                        label_msgid='label_entry_proceso',
                        description_msgid='help_entry_proceso',
                        i18n_domain='guegue.alcaldias',
                        description='')),
    atapi.StringField('estado',
                searchable=1,
                isMetadata=0,
                vocabulary=['Vigente','En Evaluación','Adjudicado','En Ejecución','Desierto','Suspendido','Otro'],
                widget=atapi.SelectionWidget(label='Estado',
                                      maxlength=150,
                                      size=30,
                                      label_msgid="label_entry_estado",
                                      description_msgid="help_entry_estado",
                                      i18n_domain="guegue.alcaldias",
                                      description='')),
    atapi.StringField('dependencia',
                searchable=1,
                isMetadata=0,
                vocabulary="getDependencias",
                widget=atapi.SelectionWidget(label='Unidad/Dependencia solicitante',
                                      label_msgid="label_entry_dependencia",
                                      description_msgid="help_entry_dependencia",
                                      i18n_domain="guegue.alcaldias",
                                      description='')),
    atapi.TextField('body',
              searchable=1,
              required=0,
              primary=1,
              default_content_type='text/html',
              default_output_type='text/html',
              allowable_content_types=('text/plain','text/structured', 'text/html', 'text/restructured'),
              widget=atapi.RichWidget(label='Observaciones y/o Comentarios adicionales',
                                label_msgid="label_entry_body",
                                description_msgid="help_entry_body",
                                i18n_domain="guegue.alcaldias",
                                description="")),
    atapi.FileField('adjunto',
              searchable=0,
              required=0,
              widget=atapi.FileWidget(label='Pliego de Bases y Condiciones',
                                label_msgid="label_entry_adjunto",
                                description_msgid="help_entry_adjunto",
                                i18n_domain="guegue.alcaldias",
                                description='Adjuntar Pliego de Bases y Condiciones')),

))

# Set storage on fields copied from ATContentTypeSchema, making sure
# they work well with the python bridge properties.

schemata.finalizeATCTSchema(LicitacionSchema, moveDiscussion=False)

class Licitacion(base.ATCTContent):
    """Tipo de datos para licitacions"""
    implements(ILicitacion)

    def getDependencias(self):
        dl = utils.DisplayList()
        linklist = self.portal_catalog.searchResults(portal_type='Dependencia')
        for link in linklist:
            dl.add(link['id'], link['Title'])
        return dl

    portal_type = "Licitacion"
    schema = LicitacionSchema

    #title = atapi.ATFieldProperty('title')
    #description = atapi.ATFieldProperty('description')

atapi.registerType(Licitacion, PROJECTNAME)
